home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / CIncludesTool 1.0 / original version / source files / utilities.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-29  |  2.7 KB  |  194 lines  |  [TEXT/MPS ]

  1.  
  2. #include "CIncludesCode.h"
  3. #include <Files.h>
  4. #include <OSUtils.h>
  5. #include <StdIO.h>
  6. #include <Memory.h>
  7.  
  8. void fdisplay( char *s )
  9. {
  10.     char c;
  11.     
  12.     while ( c = *s++ )
  13.         if ( c <= 32 )
  14.             fprintf( stderr, "%d ", c );
  15.         else
  16.             fprintf( stderr, "%c ", c );
  17. }
  18.  
  19. Boolean equalStringsUncased( char *s1, char *s2 )
  20. {
  21.     char c1, c2;
  22.     
  23.     while ( *s1 )
  24.     {
  25.         c1 = *s1++;
  26.         c2 = *s2++;
  27.         if ( c1 != c2 )
  28.         {
  29.             c1 &= 0xDF;
  30.             c2 &= 0xDF;
  31.             if (  (c1 < 'A') ||
  32.                   (c1 > 'Z') ||
  33.                   (c1 != c2) )
  34.                 return false;
  35.         }
  36.     }
  37.     return ( *s1 == *s2 );
  38. }
  39.  
  40.  
  41. Boolean isString( char *p, char *q )
  42. { // p is pointer to text chars; q is pointer to C string.
  43.   // returns true if chars at p equal chars at q.
  44.  
  45.     for ( ; *q != '\0'; ++q, ++p )
  46.         if ( *q != *p )
  47.             return false;
  48.     return true;
  49. }
  50.  
  51.  
  52. Handle loadDataFile( char *filename )
  53. {
  54.     short          fileid;
  55.     long         filesize;
  56.     OSErr         error;
  57.     Handle        dataHdl = 0;
  58.     Str255        s;
  59.  
  60.     strcpy( s, filename );
  61.     c2pstr( s );
  62.  
  63.     if ( !( error = FSOpen( s, 0, &fileid ) ) )
  64.     {
  65.         if ( !( error = GetEOF( fileid, &filesize ) ) )
  66.             if ( dataHdl = NewHandle( filesize + 1 ) )
  67.                 error = FSRead( fileid, &filesize, *dataHdl );
  68.             else
  69.                 error = -1;
  70.  
  71.         (void) FSClose( fileid );
  72.     }
  73.  
  74.     if (error)
  75.         errorExit( "Error loading source file!" );
  76.  
  77.     *(*dataHdl + filesize) = '\n';
  78.     return dataHdl;
  79. }
  80.  
  81.  
  82. void copyNames( char *dest, char *src )
  83. { // extracts C filename from C pathname
  84.  
  85.     char *s = strrchr( src, (int) ':');
  86.     char *d = dest;
  87.  
  88.     ++s;
  89.     while ( *s )
  90.         *d++ = *s++;
  91.  
  92.     *d = '\0';
  93. }
  94.  
  95.  
  96. void errorExit( char *s )
  97. {
  98.     fprintf( stderr, "%s\n", s );
  99.     SysBeep(1);
  100.     exit(2);
  101. }
  102.  
  103.  
  104. void checkMemory()
  105. {
  106.     OSErr    err = MemError();
  107.     
  108.     if ( err )
  109.     {
  110.         fprintf( stderr, "Memory Operation Failed: %d\n", err );
  111.         SysBeep(1);
  112.         exit(2);
  113.     }
  114. }
  115.  
  116.  
  117. short getShort( char *p )
  118. {
  119.     union shortUnion n;
  120.     
  121.     n.cc[0] = *p++;
  122.     n.cc[1] = *p;
  123.     return ( n.vv );
  124. }
  125.  
  126.  
  127. long getLong( char *p )
  128. {
  129.     union longUnion n;
  130.     
  131.     n.cc[0] = *p++;
  132.     n.cc[1] = *p++;
  133.     n.cc[2] = *p++;
  134.     n.cc[3] = *p;
  135.     return ( n.vvvv );
  136. }
  137.  
  138.  
  139.  
  140. void putShort( char *dest, short value )
  141. {
  142.     union shortUnion  n;
  143.  
  144.     n.vv = value;    
  145.     *dest++ = n.cc[0];
  146.     *dest   = n.cc[1];
  147. }
  148.  
  149.  
  150. void putLong( char *dest, long value )
  151. {
  152.     union longUnion  n;
  153.  
  154.     n.vvvv = value;    
  155.     *dest++ = n.cc[0];
  156.     *dest++ = n.cc[1];
  157.     *dest++ = n.cc[2];
  158.     *dest   = n.cc[3];
  159. }
  160.  
  161.  
  162. short dictionaryIndex( char ch )
  163. {
  164.     if ( ch == '_' )
  165.         return 0;
  166.     else
  167.         return ( (ch & 0xDF) - '@' );
  168. }
  169.  
  170. Boolean validStart( char c )
  171. {
  172.     return ( (c == '_') |
  173.              ( (c >= 'A') && (c <= 'Z') ) | 
  174.              ( (c >= 'a') && (c <= 'z') ) );
  175. }
  176.  
  177. Boolean validChar( char c )
  178. {
  179.     return ( ( (c >= '0') && (c <= '9') ) | 
  180.              validStart( c ) );
  181. }
  182.  
  183. int validate( char *s )
  184. {
  185.     if ( (strlen( s ) > 63) || !validStart( *s ) )
  186.         return 2;
  187.     else
  188.         for ( ++s; *s != '\0'; ++s )
  189.             if ( !validChar( *s ) )
  190.                 return 2;
  191.     return 0;
  192. }
  193.  
  194.